
#include "Socket.h"
#include "Intaddr.h"
#include "serve.h"
#include "Http.h"
#include <iostream>

// 调用方式: ./serve port
int main(int argc, char *argv[])
{
    // // 使用权限：必须有root权限
    // if (geteuid())
    // {
    //     std::cerr << argv[0] << " : Permission denied" << std::endl;
    //     exit(Err_Permiss);
    // }

    // 调用方式: ./serve port
    if (argc != 2)
    {
        std::cerr << "使用方式错误,正确调用方式: " << argv[0] << " port" << std::endl;
        exit(Err_Use);
    }
    zmh::Intaddr serve_addr(AF_INET, std::stoi(argv[1]));

    // // 守护进程化 --- 系统调用: daemon(int,int); // 行为与使用方法痛下
    // Daemon(0, 0);

    // // 环境配置 --- 需要了再添加, 目前是不需要的
    // umask(0);
    // SET_LOG(false);

    // // 计算器
    // zmh::cal cal;std:ki

    // 协议
    zmh::Http protocol;

    // 服务器
    std::shared_ptr<zmh::serve> serve =
        std::make_shared<zmh::serve>(serve_addr, [&protocol](std::shared_ptr<zmh::Socket> serveSocket)
                                     { protocol.GetRequest(serveSocket); });
    serve->start();
    return 0;
}
